package com.jumper.study.front.service;

import java.util.List;

import com.jumper.study.front.dto.resp.LessonEbookResp;
import com.jumper.study.db.model.Lesson;
import com.jumper.study.front.dto.req.LessonSearchReq;
import com.jumper.study.front.dto.resp.LessonCategoryResp;
import com.jumper.study.front.dto.resp.LessonChapterResp;
import com.jumper.study.front.dto.resp.LessonDetailResp;
import com.jumper.study.front.dto.resp.LessonListItemResp;
import com.jumper.study.front.dto.vo.PageVO;

/**
 * 课程服务
 */
public interface LessonService {
    final int defaultRecommendCount = 10;

    /**
     * 读取课程
     * @param id
     * @return
     */
    Lesson getById(Long id);

    /**
     * 首页推荐课程列表
     * @param count
     * @return
     */
    List<LessonListItemResp> recommendList(int count);

    default List<LessonListItemResp> recommendList() {
        return recommendList(defaultRecommendCount);
    }

    /**
     * 课程分类列表
     * @return
     */
    List<LessonCategoryResp> categoryListWithChildren();

    /**
     * 课程搜索
     * @param search
     * @return
     */
    List<LessonListItemResp> pageSearchList(PageVO page, LessonSearchReq search);

    /**
     * 读取课程详情
     * @param id
     * @return
     */
    LessonDetailResp getDetail(Long id);

    /**
     * 读取课程章节列表
     * @param lessonId
     * @return
     */
    List<LessonChapterResp> chapterList(Long lessonId);

    /**
     * 读取课件资料列表
     * @param lessonId
     * @return
     */
    List<LessonEbookResp> ebookList(Long lessonId);
}
